Eecient Symbolic Analysis for Optimizing Compilers ?
نویسنده
چکیده
Because most of the execution time of a program is typically spend in loops, loop optimization is the main target of optimizing and restructuring compilers. An accurate determination of induction variables and dependencies in loops is of paramount importance to many loop optimization and parallelization techniques, such as generalized loop strength reduction, loop parallelization by induction variable substitution, and loop-invariant expression elimination. In this paper we present a new method for induction variable recognition. Existing methods are either ad-hoc and not powerful enough to recognize some types of induction variables, or existing methods are powerful but not safe. The most powerful method known is the symbolic diierencing method as demonstrated by the Parafrase-2 compiler on parallelizing the Perfect Benchmarks (R). However, symbolic diierencing is inherently unsafe and a compiler that uses this method may produce incorrectly transformed programs without issuing a warning. In contrast, our method is safe, simpler to implement in a compiler, better adaptable for controlling loop transformations, and recognizes a larger class of induction variables.
منابع مشابه
Formal Veri cation of Transformations on Dependency Graphs in Optimizing Compilers
Dependency graphs are used as intermediate representations in optimizing compilers and software-engineering. In a transformational design approach, optimization and reenement transformations are used to transform dependency-graph-based speciications at higher abstraction levels to those at lower abstraction levels. An informal representation would lead to subtle errors, making it diicult to gua...
متن کاملFractal Symbolic Analysis for Program Transformations
Restructuring compilers use dependence analysis to prove that the meaning of a program is not changed by a transformation. A well-known limitation of dependence analysis is that it examines only the memory locations read and written by a statement, and does not assume any particular interpretation for the operations in that statement. Exploiting the semantics of these operations enables a wider...
متن کاملEfficient Symbolic Analysis for Optimizing Compilers
Because most of the execution time of a program is typically spend in loops, loop optimization is the main target of optimizing and restructuring compilers. An accurate determination of induction variables and dependencies in loops is of paramount importance to many loop optimization and parallelization techniques, such as generalized loop strength reduction, loop parallelization by induction v...
متن کاملCounting Solutions to Linear and Nonlinear Constraints through Ehrhart Polynomials: Applications to Analyze and Transform Scientiic Programs
In order to produce eecient parallel programs, optimizing compilers need to include an analysis of the initial sequential code. When analyzing loops with aane loop bounds, many computations are relevant to the same general problem: counting the number of integer solutions of selected free variables in a set of linear and/or nonlinear parameterized constraints. For example, computing the number ...
متن کاملSymbolic expression evaluation to support parallelizing compilers
Symbolic analysis is of paramount importance to further advance the state-of-the-art of parallelizing compilers. The quality of various compiler analyses and optimizing code transformations depend on the ability to evaluate symbolic expressions for equality and inequality (=; <;>) relationships. This paper describes a powerful algorithm that computes lower and/or upper bounds of wide classes of...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2007